//
//  CZMainTabBar.swift
//  iOSWeibo10
//
//  Created by ge on 16/5/10.
//  Copyright © 2016年 ge. All rights reserved.
//

import UIKit

class CZMainTabBar: UITabBar {
    
    // MARK: - 属性
    /// 2.加号按钮调用闭包
    var composeCallback: (() -> ())?

    override func layoutSubviews() {
        super.layoutSubviews()
//        print("CZMainTabBar - layoutSubviews")
        
        /*
        view: <_UITabBarBackgroundView:; frame = (0 0; 375 49); autoresize = W; userInteractionEnabled = NO; layer = <CALayer: >>
        view: <UITabBarButton: ; frame = (2 1; 90 48); opaque = NO; layer = <CALayer: 0x7ff86b411f10>>
        view: <UITabBarButton: ; frame = (96 1; 90 48); opaque = NO; layer = <CALayer: 0x7ff86b40e280>>
        view: <UITabBarButton: ; frame = (190 1; 89 48); opaque = NO; layer = <CALayer: 0x7ff86b420280>>
        view: <UITabBarButton: ; frame = (283 1; 90 48); opaque = NO; layer = <CALayer: 0x7ff86b424240>>
        view: <UIImageView: ; frame = (0 -0.5; 375 0.5); autoresize = W; userInteractionEnabled = NO; layer = <CALayer: >>
        view: <UIButton: ; frame = (0 0; 100 49); opaque = NO; layer = <CALayer: 0x7ff86b41c5a0>>
        */
        
        // 计算frame的宽度
        let width = self.frame.width / 5
        
        // 记录按钮的位置
        var index = 0
        for view in self.subviews {
//            print("view: \(view)")
            // 找到UITabBarButton,才是按钮,需要修改frame值
            // UITabBarButton是系统隐藏的类 无法调用这个类的方法 [UITabBarButton class]
            if view.isKindOfClass(NSClassFromString("UITabBarButton")!){
                // 能到这里面来说明view 是 UITabBarButton类型
                // 重新设置frame
                view.frame = CGRect(x: CGFloat(index) * width, y: 0, width: width, height: self.frame.height)
                
                index++
                
                if index == 2 {
                    index++
                }
            }
        }
        
        // 设置加好按钮的位置
        composeButton.frame = CGRect(x: 2 * width, y: 0, width: width, height: self.frame.height) 
    }
    
    // MARK: - 按钮点击事件
    func composeButtonClick(button: UIButton){
//        print("composeButtonClick: \(button)")
        // 最终需要去Modal出控制器,View不能Modal出控制器,只有控制器才能Modal出控制器,当按钮点击的时候需要让控制器去做事情
        
        // 3.调用闭包
        composeCallback?()
        
    }
    
    //MARK: - 懒加载
    lazy var composeButton: UIButton = {
        
        // 创建按钮
        let button = UIButton(type: UIButtonType.Custom)
        
        // 设置按钮
        // 背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        
        // 按钮的图片 tabbar_compose_icon_add_highlighted
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        
        self.addSubview(button)
        
        // Selector("")
        button.addTarget(self, action: "composeButtonClick:", forControlEvents: UIControlEvents.TouchUpInside)
        
        return button
    }()

}
